package com.FH.applyForm.officeServies.expenform_firsttype;

import com.FH.applyForm.officeServies.expenform_secondtype.ExpensecondResource;
import com.FH.util.AccessDB;
import com.FH.util.ResultDTO;
import com.FH.util.warnSrc;
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject;

import javax.ejb.Stateless;
import javax.inject.Inject;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

/**
 * Created by Administrator on 2016/10/21.
 */
@Stateless
public class ExpenformDAOImpl extends AccessDB implements ExpenformDAO{

    @Inject
    ExpensecondResource expensecondResource;
    /**
     * 查询报销单一级菜单
     * @param page
     * @param size
     * @return
     */
    @Override
    public ResultDTO getExpenformTypeInfo(String search,String page, String size) {

        ResultDTO resultDTO = new ResultDTO();

        try {
            JSONObject json = new JSONObject(search);
            String existName = "0";

            String sqlexit = "select count(1) from advance_type  where 1=1 ";

            String sql_w = "";//查询条件sql组合

            String sql_page = "";//分页sql组合
            Integer page_ok = Integer.parseInt(page);
            Integer size_ok = Integer.parseInt(page);
            if (page.equals("1")) {
                sql_page = " limit 0," + size + "";
            } else {
                sql_page = " limit " + ((page_ok - 1) * size_ok + 1) + "," + size + "";
            }

            if (json.has("advancetype_id")) {
//                sql_w += " AND organization_id = "+json.getString("organization_id");
                sql_w += " AND advancetype_id ='" + json.getString("advancetype_id") + "'";
            }
            String sql_ok = sqlexit + sql_w;//组合好的sql语句
            existName = getReportingToOne(sql_ok);//查询此数据是否存在

            List<String[]> seresult = new ArrayList<String[]>();

            List<ExpenformShowDTO> result = new ArrayList<ExpenformShowDTO>();

            if (!existName.equals("0")) {
                String sql = "SELECT advancetype_id,advancetype_name FROM advance_type WHERE 1=1 " + sql_w + sql_page;
                seresult = this.getReportingTo(sql);

                //构建返回对象
                for (int i = 0; i < seresult.size(); i++) {

                    ExpenformShowDTO department = new ExpenformShowDTO();
                    String advancetype_id = seresult.get(i)[1];
                    department.setAdvancetype_id(advancetype_id);
                    department.setAdvancetype_name(seresult.get(i)[2]);


                    ResultDTO userlist;
                    userlist=expensecondResource.getExpenformtypesInfo("{advancetype_id:"+advancetype_id+"}","1","20");
                    department.setQq(userlist.getValues());


                    result.add(department);

                }
            }

            if(seresult.size()!=0) {
                resultDTO.setValues(result);
                resultDTO.setStatus("90000");
                resultDTO.setDescritpion(warnSrc.get_success);
            }else {
                resultDTO.setStatus("90001");
                resultDTO.setDescritpion(warnSrc.get_fail);
            }

            resultDTO.setValues(result);

        } catch (JSONException e) {
            e.printStackTrace();
        }

        return resultDTO;

    }

    /**
     * 添加报销单一级菜单
     * @param expenformPullDTO
     * @return
     */
    @Override
    public ResultDTO addExpenformTypeInfo(ExpenformPullDTO expenformPullDTO) {
        int resultls = 0;
        ResultDTO resultDTO = new ResultDTO();
        String uuid = UUID.randomUUID().toString().trim().replaceAll("-", "");

        String advancetype_name = expenformPullDTO.getAdvancetype_name();
        String sql = "select * from advance_type where advancetype_name='" + advancetype_name + "'";
        String sum = getReportingToOne(sql);
        if (!sum.equals("")) {

            resultDTO.setStatus("90001");
            resultDTO.setDescritpion("信息已存在，请重新分配");
            return resultDTO;
        }
        String sql1 = "";
        sql1 = "insert into advance_type (advancetype_id,advancetype_name)" +
                "values('" + uuid + "','" + expenformPullDTO.getAdvancetype_name() + "')";

        resultls = addReportingTo(sql1);
        if (resultls != 0) {
            resultDTO.setStatus("90000");
            resultDTO.setDescritpion(warnSrc.add_success);
        } else {
            resultDTO.setStatus("90001");
            resultDTO.setDescritpion(warnSrc.add_fail);
        }
        return resultDTO;
    }

    /**
     * 修改报销单一级菜单
     * @param expenformPullDTO
     * @return
     */
    @Override
    public ResultDTO updateExpenformTypeInfo(ExpenformPullDTO expenformPullDTO) {
        ResultDTO resultDTO = new ResultDTO();

        String QUERY = "";

        //更新sql语句
        QUERY += "update advance_type set ";
        if (null != expenformPullDTO.getAdvancetype_name() && !"".equals(expenformPullDTO.getAdvancetype_name())) {
            QUERY += " advancetype_name = '" + expenformPullDTO.getAdvancetype_name() + "'";
        }

        QUERY += " where advancetype_id = '" + expenformPullDTO.getAdvancetype_id() + "'";


        int result = this.addReportingTo(QUERY);

        // 判断SQl是否执行成功
        if (result != 0) {

            resultDTO.setStatus("90000");
            resultDTO.setDescritpion(warnSrc.update_success);
        } else {
            resultDTO.setStatus("90001");
            resultDTO.setDescritpion(warnSrc.update_fail);
        }
        return resultDTO;


    }

    /**
     * 删除报销单一级菜单
     * @param expenformPullDTO
     * @return
     */
    @Override
    public ResultDTO deleteExpenformTypeInfo(ExpenformPullDTO expenformPullDTO) {
        String sql="select count(1) from advance_type WHERE advancetype_id='"+expenformPullDTO.getAdvancetype_id()+"'";
        String existadvance= getReportingToOne(sql);

        int result = 0;

        ResultDTO resultDTO = new ResultDTO();
        // 删除SQL语句
        if(!existadvance.equals("0")){
            String QUERY = "";
            QUERY += "delete from advance_type  where advancetype_id='"+expenformPullDTO.getAdvancetype_id()+"'";

            result = this.addReportingTo(QUERY);
        }

        // 判断SQl是否执行成功
        if (result!= 0) {
            String sqlq = "delete from advance_types where advancetype_id = '"+expenformPullDTO.getAdvancetype_id()+"'";
            int  results = this.addReportingTo(sqlq);
            if(results!=0){
                resultDTO.setStatus("90000");
                resultDTO.setDescritpion(warnSrc.delete_success);
            }
        }else {
            resultDTO.setStatus("90001");
            resultDTO.setDescritpion(warnSrc.delete_fail);
        }
        return resultDTO;
    }
}
